namespace ext.form
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>
	/// Standard form container.  Layout  By default, FormPanel is configured with layout:&apos;form&apos; to use an {@link Ext.layout.FormLayout}
	/// layout manager, which styles and renders fields and labels correctly. When nesting additional Containers
	/// within a FormPanel, you should ensure that any descendant Containers which host input Fields use the
	/// {@link Ext.layout.FormLayout} layout manager.  BasicForm  Although not listed as configuration options of FormPanel, the FormPanel class accepts all
	/// of the config options required to configure its internal {@link Ext.form.BasicForm} for:
	///   {@link Ext.form.BasicForm#fileUpload file uploads}  functionality for {@link Ext.form.BasicForm#doAction loading, validating and submitting} the form    Note: If subclassing FormPanel, any configuration options for the BasicForm must be applied to
	/// the initialConfig property of the FormPanel. Applying {@link Ext.form.BasicForm BasicForm}
	/// configuration settings to this will not affect the BasicForm&apos;s...
	/// </summary>
	/// <htmlSummary>
	/// &lt;p&gt;Standard form container.&lt;/p&gt;
	///
	/// &lt;p&gt;&lt;b&gt;&lt;u&gt;Layout&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
	/// &lt;p&gt;By default, FormPanel is configured with &lt;tt&gt;layout:&apos;form&apos;&lt;/tt&gt; to use an {@link Ext.layout.FormLayout}
	/// layout manager, which styles and renders fields and labels correctly. When nesting additional Containers
	/// within a FormPanel, you should ensure that any descendant Containers which host input Fields use the
	/// {@link Ext.layout.FormLayout} layout manager.&lt;/p&gt;
	///
	/// &lt;p&gt;&lt;b&gt;&lt;u&gt;BasicForm&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
	/// &lt;p&gt;Although &lt;b&gt;not listed&lt;/b&gt; as configuration options of FormPanel, the FormPanel class accepts all
	/// of the config options required to configure its internal {@link Ext.form.BasicForm} for:
	/// &lt;div class=&quot;mdetail-params&quot;&gt;&lt;ul&gt;
	/// &lt;li&gt;{@link Ext.form.BasicForm#fileUpload file uploads}&lt;/li&gt;
	/// &lt;li&gt;functionality for {@link Ext.form.BasicForm#doAction loading, validating and submitting} the form&lt;/li&gt;
	/// &lt;/ul&gt;&lt;/div&gt;
	///
	/// &lt;p&gt;&lt;b&gt;Note&lt;/b&gt;: If subclassing FormPanel, any configuration options for the BasicForm must be applied to
	/// the &lt;tt&gt;&lt;b&gt;initialConfig&lt;/b&gt;&lt;/tt&gt; property of the FormPanel. Applying {@link Ext.form.BasicForm BasicForm}
	/// configuration settings to &lt;b&gt;&lt;tt&gt;this&lt;/tt&gt;&lt;/b&gt; will &lt;b&gt;not&lt;/b&gt; affect the BasicForm&apos;s configuration.&lt;/p&gt;
	///
	/// &lt;p&gt;&lt;b&gt;&lt;u&gt;Form Validation&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
	/// &lt;p&gt;For information on form validation see the following:&lt;/p&gt;
	/// &lt;div class=&quot;mdetail-params&quot;&gt;&lt;ul&gt;
	/// &lt;li&gt;{@link Ext.form.TextField}&lt;/li&gt;
	/// &lt;li&gt;{@link Ext.form.VTypes}&lt;/li&gt;
	/// &lt;li&gt;{@link Ext.form.BasicForm#doAction BasicForm.doAction &lt;b&gt;clientValidation&lt;/b&gt; notes}&lt;/li&gt;
	/// &lt;li&gt;&lt;tt&gt;{@link Ext.form.FormPanel#monitorValid monitorValid}&lt;/tt&gt;&lt;/li&gt;
	/// &lt;/ul&gt;&lt;/div&gt;
	///
	/// &lt;p&gt;&lt;b&gt;&lt;u&gt;Form Submission&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
	/// &lt;p&gt;By default, Ext Forms are submitted through Ajax, using {@link Ext.form.Action}. To enable normal browser
	/// submission of the {@link Ext.form.BasicForm BasicForm} contained in this FormPanel, see the
	/// &lt;tt&gt;&lt;b&gt;{@link Ext.form.BasicForm#standardSubmit standardSubmit}&lt;/b&gt;&lt;/tt&gt; option.&lt;/p&gt;
	/// </htmlSummary>
	/// <definedin>src\widgets\form\Form.js</definedin>
	[ScriptName("FormPanel")]
	[ScriptNamespace("Ext.form")]
	[Imported()]
	public partial class FormPanel : ext.Panel
	{
		
		#region Constructors
		/// <summary>Constructor</summary>
		/// <param name="config">Configuration options</param>
		public FormPanel(ext.form.FormPanel_Configuration config)
		{
		}
		
		/// <summary>Constructor</summary>
		public FormPanel()
		{
		}
		#endregion
		
		#region Fields
		/// <summary>The id of the FORM tag (defaults to an auto-generated id).</summary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		/// <optional>Optional Field</optional>
		[ScriptName("formId")]
		public string FormId;
		
		/// <summary>
		/// true to hide field labels by default (sets display:none). Defaults to
		/// false.  Also see {@link Ext.Component}.{@link Ext.Component#hideLabel hideLabel}.
		/// </summary>
		/// <htmlSummary>
		/// &lt;p&gt;&lt;tt&gt;true&lt;/tt&gt; to hide field labels by default (sets &lt;tt&gt;display:none&lt;/tt&gt;). Defaults to
		/// &lt;tt&gt;false&lt;/tt&gt;.&lt;/p&gt;
		/// &lt;p&gt;Also see {@link Ext.Component}.&lt;tt&gt;{@link Ext.Component#hideLabel hideLabel}&lt;/tt&gt;.
		/// </htmlSummary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		[ScriptName("hideLabels")]
		public bool HideLabels;
		
		/// <summary>
		/// The default padding in pixels for field labels (defaults to 5). labelPad only
		/// applies if {@link #labelWidth} is also specified, otherwise it will be ignored.
		/// </summary>
		/// <htmlSummary>
		/// The default padding in pixels for field labels (defaults to &lt;tt&gt;5&lt;/tt&gt;). &lt;tt&gt;labelPad&lt;/tt&gt; only
		/// applies if &lt;tt&gt;{@link #labelWidth}&lt;/tt&gt; is also specified, otherwise it will be ignored.
		/// </htmlSummary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		[ScriptName("labelPad")]
		public System.Number LabelPad;
		
		/// <summary>See {@link Ext.Component}.{@link Ext.Component#labelSeparator labelSeparator}</summary>
		/// <htmlSummary>See {@link Ext.Component}.&lt;tt&gt;{@link Ext.Component#labelSeparator labelSeparator}&lt;/tt&gt;</htmlSummary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		[ScriptName("labelSeparator")]
		public string LabelSeparator;
		
		/// <summary>
		/// The width of labels in pixels. This property cascades to child containers
		/// and can be overridden on any child container (e.g., a fieldset can specify a different labelWidth
		/// for its fields) (defaults to 100).
		/// </summary>
		/// <htmlSummary>
		/// The width of labels in pixels. This property cascades to child containers
		/// and can be overridden on any child container (e.g., a fieldset can specify a different &lt;tt&gt;labelWidth&lt;/tt&gt;
		/// for its fields) (defaults to &lt;tt&gt;100&lt;/tt&gt;).
		/// </htmlSummary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		[ScriptName("labelWidth")]
		public System.Number LabelWidth;
		
		/// <summary>A css class to apply to the x-form-item of fields. This property cascades to child containers.</summary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		[ScriptName("itemCls")]
		public string ItemCls;
		
		/// <summary>An array of {@link Ext.Button}s or {@link Ext.Button} configs used to add buttons to the footer of this FormPanel.</summary>
		/// <htmlSummary>
		/// An array of {@link Ext.Button}s or {@link Ext.Button} configs used to add buttons to the footer of this FormPanel.&lt;br&gt;
		/// &lt;p&gt;Buttons in the footer of a FormPanel may be configured with the option &lt;tt&gt;formBind: true&lt;/tt&gt;. This causes
		/// the form&apos;s {@link #monitorValid valid state monitor task} to enable/disable those Buttons depending on
		/// the form&apos;s valid/invalid state.&lt;/p&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		[ScriptName("buttons")]
		public System.Array Buttons;
		
		/// <summary>Minimum width of all buttons in pixels (defaults to 75).</summary>
		/// <htmlSummary>Minimum width of all buttons in pixels (defaults to &lt;tt&gt;75&lt;/tt&gt;).</htmlSummary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		[ScriptName("minButtonWidth")]
		public System.Number MinButtonWidth;
		
		/// <summary>
		/// The label alignment value used for the text-align specification
		/// for the container. Valid values are &quot;left&quot;, &quot;top&quot; or &quot;right&quot;
		/// (defaults to &quot;left&quot;). This property cascades to child containers and can be
		/// overridden on any child container (e.g., a fieldset can specify a different labelAlign
		/// for its fields).
		/// </summary>
		/// <htmlSummary>
		/// The label alignment value used for the &lt;tt&gt;text-align&lt;/tt&gt; specification
		/// for the &lt;b&gt;container&lt;/b&gt;. Valid values are &lt;tt&gt;&quot;left&lt;/tt&gt;&quot;, &lt;tt&gt;&quot;top&quot;&lt;/tt&gt; or &lt;tt&gt;&quot;right&quot;&lt;/tt&gt;
		/// (defaults to &lt;tt&gt;&quot;left&quot;&lt;/tt&gt;). This property cascades to child &lt;b&gt;containers&lt;/b&gt; and can be
		/// overridden on any child &lt;b&gt;container&lt;/b&gt; (e.g., a fieldset can specify a different &lt;tt&gt;labelAlign&lt;/tt&gt;
		/// for its fields).
		/// </htmlSummary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		[ScriptName("labelAlign")]
		public string LabelAlign;
		
		/// <summary>
		/// If true, the form monitors its valid state client-side and
		/// regularly fires the {@link #clientvalidation} event passing that state.
		/// </summary>
		/// <htmlSummary>
		/// If &lt;tt&gt;true&lt;/tt&gt;, the form monitors its valid state &lt;b&gt;client-side&lt;/b&gt; and
		/// regularly fires the {@link #clientvalidation} event passing that state.&lt;br&gt;
		/// &lt;p&gt;When monitoring valid state, the FormPanel enables/disables any of its configured
		/// {@link #buttons} which have been configured with &lt;code&gt;formBind: true&lt;/code&gt; depending
		/// on whether the {@link Ext.form.BasicForm#isValid form is valid} or not. Defaults to &lt;tt&gt;false&lt;/tt&gt;&lt;/p&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		[ScriptName("monitorValid")]
		public bool MonitorValid;
		
		/// <summary>The milliseconds to poll valid state, ignored if monitorValid is not true (defaults to 200)</summary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		[ScriptName("monitorPoll")]
		public System.Number MonitorPoll;
		
		/// <summary>
		/// Defaults to &apos;form&apos;. Normally this configuration property should not be altered.
		/// For additional details see {@link Ext.layout.FormLayout} and {@link Ext.Container#layout Ext.Container.layout}.
		/// </summary>
		/// <htmlSummary>
		/// Defaults to &lt;tt&gt;&apos;form&apos;&lt;/tt&gt;. Normally this configuration property should not be altered.
		/// For additional details see {@link Ext.layout.FormLayout} and {@link Ext.Container#layout Ext.Container.layout}.
		/// </htmlSummary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		[ScriptName("layout")]
		public string Layout;
		
		/// <summary>If the monitorValid config option is true, this event fires repetitively to notify of valid state</summary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		[ScriptName("clientvalidationEventName")]
		public const string ClientvalidationEventName = "clientvalidation";
		#endregion
		
		#region Methods
		/// <summary>Provides access to the {@link Ext.form.BasicForm Form} which this Panel contains.</summary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		/// <returns>The {@link Ext.form.BasicForm Form} which this Panel contains.</returns>
		[ScriptName("getForm")]
		public ext.form.BasicForm GetForm()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Starts monitoring of the valid state of this form. Usually this is done by passing the config
		/// option &quot;monitorValid&quot;
		/// </summary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		[ScriptName("startMonitoring")]
		public void StartMonitoring()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Stops monitoring of the valid state of this form</summary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		[ScriptName("stopMonitoring")]
		public void StopMonitoring()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>This is a proxy for the underlying BasicForm&apos;s {@link Ext.form.BasicForm#load} call.</summary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		/// <param name="options">The options to pass to the action (see {@link Ext.form.BasicForm#doAction} for details)</param>
		[ScriptName("load")]
		public void Load(object options)
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
		
		#region Events
		/// <summary>If the monitorValid config option is true, this event fires repetitively to notify of valid state</summary>
		/// <definedin>src\widgets\form\Form.js</definedin>
		[ScriptName("clientvalidation")]
		public event ext.auto.Delegate_ext_form_FormPanel_And_System_Boolean Clientvalidation;
		#endregion
	}
}
